<?php

require_once "Basic.php";

class MakeReturn extends BasicEntity {
  
  public function __construct() {
    $this->fields = array (
      new FormField(true, "locacao", htmlentities("Código da Locação"), new FormFieldAbsNumber()),
      new FormField(true, "km", htmlentities("Kilometragem do Veículo"), new FormFieldAbsNumber()),
    );
    $this->processFields();
  }
  
  public function actionDescription() {
    return "MakeReturn";
  }
  
  public function actionMakeReturn() {
    foreach($this->fields as $k => $v) {
      $$k = $v->value();
    }
    
    $locacao = intval($locacao);
    $km = intval($km);
    $idFilial = userId();
    $now = new DateTime("now");
    
    $db = new DBUtils();
    try {
      $db->connect();
      $db->runQuery("select * from FrotaAlugada(?) where idLocacao = ?", array($idFilial, $locacao));
      $item = $db->getItem();
      if($item === null) {
        $db->close();
        return htmlentities("Esta locação ou não é válida ou ela não é devida à sua filial.");
      }
      $updateQuery = <<<SQL
update Locacao
set dataDevolucao = ?,
    kilometragemDevolucao = ?
where idLocacao = ?
SQL;
      $updateArgs = array($now, $km, $locacao);
      $db->runQuery($updateQuery, $updateArgs);
      
      $updateQuery = <<<SQL
update Veiculo
set kilometragemAtual = ?
where idVeiculo = ?
SQL;
      $updateArgs = array($km, $item->idVeiculo);
      $db->runQuery($updateQuery, $updateArgs);
      $db->close();
    }
    catch(DBError $e) {
      logMessage($e->errors, "MakeReturn");
      $db->close();
      return "Falha no banco de dados. O erro foi reportado.";
    }
    
    return true;
  }
  
}

mustBeEmployee();
correctStdFormGET();

$page = new Page(htmlentities("Fazer uma Devolução"));
$req = new MakeReturn();
$form = new StdForm($req, $_GET, $_POST, "", "" .
                    htmlentities("Devolução realizada com sucesso.") . "</p>",
                    "MakeReturn.php");
$form->processForm();
$page->addContent($form->getHtml());

echo $page->getHtml();

